Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
✅ Files skipped from review due to trivial changes (1)
WalkthroughAdds a spec-driven development skill: new spec docs, per-step references and prompts, CR and sub-agent patterns, repo setup/monorepo guidance, state handling, code-review guidelines, a gitignore entry, a wt post-create hook, and a Claude setup script. Changes
Sequence Diagram(s)sequenceDiagram
participant User as User
participant CLI as "/spec CLI"
participant Skill as "Specs Skill"
participant FS as "Filesystem / Repo"
participant Sub as "Sub-agent (coder / CR)"
User->>CLI: run /spec new_project or /spec implement
CLI->>Skill: invoke command with args
Skill->>FS: read/write specs/projects/PROJECT_NAME/* and .specs_skill_state/current_project.md
Skill->>Sub: spawn sub-agent with prompt + relevant spec refs
Sub->>FS: create/modify files, run tests/lint, commit changes
Sub->>Skill: return summary, issues, or CR findings
Skill->>User: present summary, ask for confirmation if required
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Suggested labels
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
📝 Coding Plan
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request introduces a new 'spec-driven development' skill designed to streamline the software development lifecycle. It provides a robust framework that guides users from initial project conception through detailed specification, phased implementation, and rigorous code review. By clearly defining roles for human decision-makers and AI agents, the skill aims to enhance project clarity, maintainability, and overall quality, ensuring that development aligns closely with well-defined specifications. Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Changelog
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request introduces a new "spec" skill for spec-driven development. It adds a comprehensive set of documentation files that define the process, commands, and agent prompts for planning, building, and reviewing projects. The changes are well-structured and the process is well-thought-out. I've found a few minor inconsistencies and errors in the documentation that should be addressed to improve clarity and correctness.
| - Mark `complete` after user confirmation | ||
| - If a completed artifact is edited, downstream artifacts cascade to `draft` (if they may be affected) | ||
|
|
||
| Dependency chain: `project_overview → functional_spec → architecture → components → implementation_plan` |
There was a problem hiding this comment.
The dependency chain described here is missing the ui_design step, which is mentioned in other parts of the documentation (e.g., cmd_continue.md and cmd_new_project.md) as a conditional step between functional_spec and architecture. To maintain consistency, it should be included here.
| Dependency chain: `project_overview → functional_spec → architecture → components → implementation_plan` | |
| Dependency chain: `project_overview → functional_spec → ui_design → architecture → components → implementation_plan` |
| - → Read [references/spawning_subagents.md](references/spawning_subagents.md) for how to spawn | ||
| - Pass: phase number, project path, instruction to follow single-phase implementation | ||
| 3. **Auto-commit**: `"Phase N implementation of [project name]\n\n[description of work in phase]"` | ||
| 4. Show the phase summary from the subagent to the user |
| 4. Run tests. Iterate until passing. | ||
| 5. Run automated checks again. Iterate until clean. | ||
| 6. Self code-review via sub-agent: | ||
| - Read `spec/references/cr_agent_prompt.md` for the CR process |
There was a problem hiding this comment.
The path spec/references/cr_agent_prompt.md appears to be incorrect. Assuming the sub-agent runs from the repository root, the path should be .cursor/skills/specs/references/cr_agent_prompt.md to be valid.
| - Read `spec/references/cr_agent_prompt.md` for the CR process | |
| - Read `.cursor/skills/specs/references/cr_agent_prompt.md` for the CR process |
|
|
||
| ## CR Iteration Loop | ||
|
|
||
| 1. Spawn CR sub-agent with the CR prompt from `spec/references/cr_agent_prompt.md` |
There was a problem hiding this comment.
The path spec/references/cr_agent_prompt.md appears to be incorrect. Assuming the sub-agent runs from the repository root, the path should be .cursor/skills/specs/references/cr_agent_prompt.md to be valid.
| 1. Spawn CR sub-agent with the CR prompt from `spec/references/cr_agent_prompt.md` | |
| 1. Spawn CR sub-agent with the CR prompt from `.cursor/skills/specs/references/cr_agent_prompt.md` |
📊 Coverage ReportOverall Coverage: 91% Diff: origin/main...HEADNo lines with coverage information in this diff.
|
There was a problem hiding this comment.
Actionable comments posted: 14
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.cursor/skills/specs/references/cmd_code_review.md:
- Around line 34-38: The fenced example block beginning with the triple
backticks that contains the <prior_cr_feedback> element lacks a language tag;
update the opening fence (the ``` that starts the block) to include a language
identifier such as xml (e.g., change ``` to ```xml) so the block is properly
syntax-tagged and markdown lint warnings are resolved.
- Around line 20-23: The markdown contains incorrect sibling links like
"references/spawning_subagents.md" and "references/cr_agent_prompt.md" which
resolve to references/references/...; change them to sibling-relative paths
"./spawning_subagents.md" and "./cr_agent_prompt.md" (and update any other
occurrences of those same link strings elsewhere in the file, e.g., the
occurrences near the bottom that mirror lines 68-69) so the links point
correctly to the files in the same directory.
In @.cursor/skills/specs/references/cmd_continue.md:
- Around line 34-37: The fenced code block that currently contains the
dependency order list (the block showing "project_overview.md →
functional_spec.md → ui_design.md (if exists) → architecture.md → components/
(if exists) → implementation_plan.md") should have a language specified to
satisfy markdownlint; change the opening fence from ``` to ```text so the block
is marked as plain text and formatting/linting pass for the fence starting at
that dependency-order block.
In @.cursor/skills/specs/references/cmd_implement.md:
- Around line 65-67: The sibling links in cmd_implement.md incorrectly include
the leading "references/" prefix (e.g., "references/spawning_subagents.md" and
"references/cr_agent_prompt.md") even though the file already lives in the
references/ directory; update those link targets to be relative within the same
folder (remove the "references/" prefix) for all occurrences (including the ones
at lines ~101-102 and ~116-122) so links point to spawning_subagents.md,
cr_agent_prompt.md, etc.
- Line 54: The docs line currently references the repo-root location
`/phase_plans/phase_N.md`; change that wording in cmd_implement.md so it
instructs writers to place phase plans in the project-specific phase_plans
directory (i.e., the phase_plans folder under the target project), not the
repository root—replace the literal `/phase_plans/phase_N.md` with a
project-scoped placeholder that makes the intended project-local path clear.
In @.cursor/skills/specs/references/cmd_setup.md:
- Around line 104-118: The markdown block under the "### Suggested Addition:
Automated Checks" section uses nested triple-backtick fences which can render
incorrectly; change the outer fenced code block to a longer fence (e.g., four
backticks) or indent the inner block so the inner "```markdown" block is
preserved; update the outer fence where the example begins and ends so the
nested fenced block for "## Automated Code Checks" remains intact.
In @.cursor/skills/specs/references/coding_phase_prompt.md:
- Line 57: Replace the incorrect path prefix
"spec/references/cr_agent_prompt.md" (and any other occurrences using
"spec/references/...") in the coding sub-agent prompt to the repository's actual
reference path by updating the two occurrences (lines referencing
"spec/references/...") to "references/cr_agent_prompt.md" (i.e., change
"spec/references/..." → "references/...") so the CR loop instructions point to
the correct prompt file.
In @.cursor/skills/specs/references/cr_agent_prompt.md:
- Around line 94-98: The fenced code block containing the <prior_cr_feedback>
XML snippet is missing a language specifier; update the fenced block that starts
with ``` to include a language identifier such as text or xml (for example
change ``` to ```text or ```xml) so the block becomes fenced with a language and
satisfies markdown linting and improves rendering.
In @.cursor/skills/specs/references/spawning_subagents.md:
- Around line 29-31: The Claude Code example uses an incorrect prompt path
inside the Task(...) call; update the string
"spec/references/cr_agent_prompt.md" to the correct docs location used in this
repo (e.g., "specs/references/cr_agent_prompt.md") so the Task(...) reference
points to the actual prompt file; modify the Task invocation in the markdown
example accordingly.
In @.cursor/skills/specs/references/step_architecture.md:
- Line 91: The markdown link currently points to "references/pushback.md" which
is incorrect for this directory; update the link target on the arrowed line (the
line containing "→ Load [references/pushback.md](references/pushback.md) if not
already loaded.") to use a relative path to the local file (e.g., "pushback.md"
or "./pushback.md") so the link correctly resolves from this document's
directory.
In @.cursor/skills/specs/references/step_functional_spec.md:
- Line 81: The Markdown link uses a nested path "references/pushback.md" that
likely doesn't exist relative to step_functional_spec.md; update the link to the
correct relative path "pushback.md" (or "./pushback.md") so the reference
resolves correctly, i.e., replace references/pushback.md with pushback.md in the
document.
In @.cursor/skills/specs/references/step_ui_design.md:
- Line 57: Update the broken relative markdown link on the line containing "→
Load [references/pushback.md](references/pushback.md) if not already loaded." to
point directly to pushback.md (e.g., change the link target to pushback.md or
./pushback.md) so it no longer resolves to references/references/...; ensure the
visible text can remain "references/pushback.md" if desired but the URL target
must be corrected.
In @.cursor/skills/specs/SKILL.md:
- Around line 107-109: The fenced code block showing "Current Project:
/specs/projects/project_name" is unlabeled; update that triple-backtick fence to
specify the language tag `text` so the block becomes ```text — locate the code
block containing the string "Current Project: /specs/projects/project_name" in
SKILL.md and add the `text` tag to the opening fence for markdownlint
compatibility and consistency.
In `@specs/monorepo.md`:
- Line 9: The phrase "fine tuning" in the libs/core description should use a
hyphenated compound modifier; update the string in the monorepo spec (the table
row containing "`libs/core/` | Python library with the core functionality of
Kiln (evals, synthetic data gen, fine tuning, RAG, etc.)") to read "fine-tuning"
so the description becomes "evals, synthetic data gen, fine-tuning, RAG, etc."
to maintain consistent technical writing.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro
Run ID: d86724b3-dad9-422d-bae4-f8f9d5042942
📒 Files selected for processing (21)
.cursor/skills/specs/SKILL.md.cursor/skills/specs/references/cmd_code_review.md.cursor/skills/specs/references/cmd_continue.md.cursor/skills/specs/references/cmd_implement.md.cursor/skills/specs/references/cmd_new_project.md.cursor/skills/specs/references/cmd_setup.md.cursor/skills/specs/references/coding_phase_prompt.md.cursor/skills/specs/references/cr_agent_prompt.md.cursor/skills/specs/references/pushback.md.cursor/skills/specs/references/spawning_subagents.md.cursor/skills/specs/references/step_architecture.md.cursor/skills/specs/references/step_component_designs.md.cursor/skills/specs/references/step_functional_spec.md.cursor/skills/specs/references/step_ui_design.md.gitignoreapp/desktop/specs/projects/.gitkeepapp/web_ui/specs/projects/.gitkeeplibs/core/specs/projects/.gitkeeplibs/server/specs/projects/.gitkeepspecs/monorepo.mdspecs/projects/.gitkeep
| → Read [references/spawning_subagents.md](references/spawning_subagents.md) for how to spawn sub-agents. | ||
|
|
||
| Pass the prompt from [references/cr_agent_prompt.md](references/cr_agent_prompt.md), plus scope description. | ||
|
|
There was a problem hiding this comment.
Fix broken relative reference links in this file.
Because this file already lives in references/, links like references/spawning_subagents.md and references/cr_agent_prompt.md point to references/references/... and won’t resolve correctly. Use sibling-relative paths.
Proposed fix
-→ Read [references/spawning_subagents.md](references/spawning_subagents.md) for how to spawn sub-agents.
+→ Read [spawning_subagents.md](spawning_subagents.md) for how to spawn sub-agents.
-Pass the prompt from [references/cr_agent_prompt.md](references/cr_agent_prompt.md), plus scope description.
+Pass the prompt from [cr_agent_prompt.md](cr_agent_prompt.md), plus scope description.
-- [references/spawning_subagents.md](references/spawning_subagents.md) — How to spawn sub-agents
-- [references/cr_agent_prompt.md](references/cr_agent_prompt.md) — Prompt passed to CR sub-agent
+- [spawning_subagents.md](spawning_subagents.md) — How to spawn sub-agents
+- [cr_agent_prompt.md](cr_agent_prompt.md) — Prompt passed to CR sub-agentAlso applies to: 68-69
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.cursor/skills/specs/references/cmd_code_review.md around lines 20 - 23, The
markdown contains incorrect sibling links like
"references/spawning_subagents.md" and "references/cr_agent_prompt.md" which
resolve to references/references/...; change them to sibling-relative paths
"./spawning_subagents.md" and "./cr_agent_prompt.md" (and update any other
occurrences of those same link strings elsewhere in the file, e.g., the
occurrences near the bottom that mirror lines 68-69) so the links point
correctly to the files in the same directory.
| ``` | ||
| <prior_cr_feedback> | ||
| [Prior CR content here] | ||
| </prior_cr_feedback> | ||
| ``` |
There was a problem hiding this comment.
Add a language tag to the fenced example block.
Line 34 starts a fenced block without a language. Tagging it (e.g., xml) keeps markdown lint clean and improves readability.
🧰 Tools
🪛 markdownlint-cli2 (0.21.0)
[warning] 34-34: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.cursor/skills/specs/references/cmd_code_review.md around lines 34 - 38, The
fenced example block beginning with the triple backticks that contains the
<prior_cr_feedback> element lacks a language tag; update the opening fence (the
``` that starts the block) to include a language identifier such as xml (e.g.,
change ``` to ```xml) so the block is properly syntax-tagged and markdown lint
warnings are resolved.
| ``` | ||
| project_overview.md → functional_spec.md → ui_design.md (if exists) | ||
| → architecture.md → components/ (if exists) → implementation_plan.md | ||
| ``` |
There was a problem hiding this comment.
Specify a language for the dependency-order fenced block.
Add text to the fence starting at Line 34 to satisfy markdownlint and keep formatting consistent.
🧰 Tools
🪛 markdownlint-cli2 (0.21.0)
[warning] 34-34: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.cursor/skills/specs/references/cmd_continue.md around lines 34 - 37, The
fenced code block that currently contains the dependency order list (the block
showing "project_overview.md → functional_spec.md → ui_design.md (if exists) →
architecture.md → components/ (if exists) → implementation_plan.md") should have
a language specified to satisfy markdownlint; change the opening fence from ```
to ```text so the block is marked as plain text and formatting/linting pass for
the fence starting at that dependency-order block.
|
|
||
| 1. **Read the implementation plan** and identify the target phase | ||
| 2. **Read spec and architecture docs** for context | ||
| 3. **Write phase plan** to `/phase_plans/phase_N.md`: |
There was a problem hiding this comment.
Write phase plans to the project-specific path, not repo root.
Line 54 currently points to /phase_plans/phase_N.md, which conflicts with the documented project structure and can place files in the wrong location.
Proposed fix
-3. **Write phase plan** to `/phase_plans/phase_N.md`:
+3. **Write phase plan** to `specs/projects/PROJECT_NAME/phase_plans/phase_N.md`:📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| 3. **Write phase plan** to `/phase_plans/phase_N.md`: | |
| 3. **Write phase plan** to `specs/projects/PROJECT_NAME/phase_plans/phase_N.md`: |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.cursor/skills/specs/references/cmd_implement.md at line 54, The docs line
currently references the repo-root location `/phase_plans/phase_N.md`; change
that wording in cmd_implement.md so it instructs writers to place phase plans in
the project-specific phase_plans directory (i.e., the phase_plans folder under
the target project), not the repository root—replace the literal
`/phase_plans/phase_N.md` with a project-scoped placeholder that makes the
intended project-local path clear.
| - → Read [references/spawning_subagents.md](references/spawning_subagents.md) for how to spawn | ||
| - Pass the prompt from [references/cr_agent_prompt.md](references/cr_agent_prompt.md) to the sub-agent | ||
| - Include: "A coding agent just implemented phase N of [project]. Review the changes using `git diff`." |
There was a problem hiding this comment.
Fix sibling reference links in this references file.
These links include references/... even though this file already resides in references/, so they likely resolve incorrectly.
Proposed fix
- - → Read [references/spawning_subagents.md](references/spawning_subagents.md) for how to spawn
- - Pass the prompt from [references/cr_agent_prompt.md](references/cr_agent_prompt.md) to the sub-agent
+ - → Read [spawning_subagents.md](spawning_subagents.md) for how to spawn
+ - Pass the prompt from [cr_agent_prompt.md](cr_agent_prompt.md) to the sub-agent
- - → Read [references/spawning_subagents.md](references/spawning_subagents.md) for how to spawn
+ - → Read [spawning_subagents.md](spawning_subagents.md) for how to spawn
-For implement-all, pass the content of [references/coding_phase_prompt.md](references/coding_phase_prompt.md) to each phase sub-agent.
+For implement-all, pass the content of [coding_phase_prompt.md](coding_phase_prompt.md) to each phase sub-agent.
-- [references/spawning_subagents.md](references/spawning_subagents.md) — How to spawn sub-agents
-- [references/coding_phase_prompt.md](references/coding_phase_prompt.md) — Prompt passed to coding sub-agents
-- [references/cr_agent_prompt.md](references/cr_agent_prompt.md) — Prompt passed to CR sub-agents
+- [spawning_subagents.md](spawning_subagents.md) — How to spawn sub-agents
+- [coding_phase_prompt.md](coding_phase_prompt.md) — Prompt passed to coding sub-agents
+- [cr_agent_prompt.md](cr_agent_prompt.md) — Prompt passed to CR sub-agentsAlso applies to: 101-102, 116-122
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.cursor/skills/specs/references/cmd_implement.md around lines 65 - 67, The
sibling links in cmd_implement.md incorrectly include the leading "references/"
prefix (e.g., "references/spawning_subagents.md" and
"references/cr_agent_prompt.md") even though the file already lives in the
references/ directory; update those link targets to be relative within the same
folder (remove the "references/" prefix) for all occurrences (including the ones
at lines ~101-102 and ~116-122) so links point to spawning_subagents.md,
cr_agent_prompt.md, etc.
|
|
||
| ## Pushback | ||
|
|
||
| → Load [references/pushback.md](references/pushback.md) if not already loaded. |
There was a problem hiding this comment.
Incorrect relative path for pushback doc link.
At Line 91, the link should point to pushback.md (or ./pushback.md) from the current directory.
✏️ Suggested edit
-→ Load [references/pushback.md](references/pushback.md) if not already loaded.
+→ Load [pushback.md](pushback.md) if not already loaded.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| → Load [references/pushback.md](references/pushback.md) if not already loaded. | |
| → Load [pushback.md](pushback.md) if not already loaded. |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.cursor/skills/specs/references/step_architecture.md at line 91, The
markdown link currently points to "references/pushback.md" which is incorrect
for this directory; update the link target on the arrowed line (the line
containing "→ Load [references/pushback.md](references/pushback.md) if not
already loaded.") to use a relative path to the local file (e.g., "pushback.md"
or "./pushback.md") so the link correctly resolves from this document's
directory.
|
|
||
| ## Pushback | ||
|
|
||
| → Load [references/pushback.md](references/pushback.md) if not already loaded. |
There was a problem hiding this comment.
Fix relative link path to pushback guide.
At Line 81, references/pushback.md likely resolves to a non-existent nested path from this directory. Use pushback.md (or ./pushback.md).
✏️ Suggested edit
-→ Load [references/pushback.md](references/pushback.md) if not already loaded.
+→ Load [pushback.md](pushback.md) if not already loaded.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| → Load [references/pushback.md](references/pushback.md) if not already loaded. | |
| → Load [pushback.md](pushback.md) if not already loaded. |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.cursor/skills/specs/references/step_functional_spec.md at line 81, The
Markdown link uses a nested path "references/pushback.md" that likely doesn't
exist relative to step_functional_spec.md; update the link to the correct
relative path "pushback.md" (or "./pushback.md") so the reference resolves
correctly, i.e., replace references/pushback.md with pushback.md in the
document.
|
|
||
| ## Pushback | ||
|
|
||
| → Load [references/pushback.md](references/pushback.md) if not already loaded. |
There was a problem hiding this comment.
Broken relative link to pushback reference.
At Line 57, update the link target to pushback.md (or ./pushback.md) to avoid pointing at references/references/....
✏️ Suggested edit
-→ Load [references/pushback.md](references/pushback.md) if not already loaded.
+→ Load [pushback.md](pushback.md) if not already loaded.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| → Load [references/pushback.md](references/pushback.md) if not already loaded. | |
| → Load [pushback.md](pushback.md) if not already loaded. |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.cursor/skills/specs/references/step_ui_design.md at line 57, Update the
broken relative markdown link on the line containing "→ Load
[references/pushback.md](references/pushback.md) if not already loaded." to
point directly to pushback.md (e.g., change the link target to pushback.md or
./pushback.md) so it no longer resolves to references/references/...; ensure the
visible text can remain "references/pushback.md" if desired but the URL target
must be corrected.
| ``` | ||
| Current Project: /specs/projects/project_name | ||
| ``` |
There was a problem hiding this comment.
Add a language tag to the state-file example block.
The fenced block is unlabeled; use text for markdownlint compatibility and consistency.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.cursor/skills/specs/SKILL.md around lines 107 - 109, The fenced code block
showing "Current Project: /specs/projects/project_name" is unlabeled; update
that triple-backtick fence to specify the language tag `text` so the block
becomes ```text — locate the code block containing the string "Current Project:
/specs/projects/project_name" in SKILL.md and add the `text` tag to the opening
fence for markdownlint compatibility and consistency.
|
|
||
| | Path | Description | | ||
| |------|-------------| | ||
| | `libs/core/` | Python library with the core functionality of Kiln (evals, synthetic data gen, fine tuning, RAG, etc.) | |
There was a problem hiding this comment.
Use hyphenated compound modifier for readability.
At Line 9, change fine tuning to fine-tuning for consistent technical writing style.
✏️ Suggested edit
-| `libs/core/` | Python library with the core functionality of Kiln (evals, synthetic data gen, fine tuning, RAG, etc.) |
+| `libs/core/` | Python library with the core functionality of Kiln (evals, synthetic data gen, fine-tuning, RAG, etc.) |📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| | `libs/core/` | Python library with the core functionality of Kiln (evals, synthetic data gen, fine tuning, RAG, etc.) | | |
| | `libs/core/` | Python library with the core functionality of Kiln (evals, synthetic data gen, fine-tuning, RAG, etc.) | |
🧰 Tools
🪛 LanguageTool
[grammar] ~9-~9: Use a hyphen to join words.
Context: ...of Kiln (evals, synthetic data gen, fine tuning, RAG, etc.) | | libs/server/ | ...
(QB_NEW_EN_HYPHEN)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@specs/monorepo.md` at line 9, The phrase "fine tuning" in the libs/core
description should use a hyphenated compound modifier; update the string in the
monorepo spec (the table row containing "`libs/core/` | Python library with the
core functionality of Kiln (evals, synthetic data gen, fine tuning, RAG, etc.)")
to read "fine-tuning" so the description becomes "evals, synthetic data gen,
fine-tuning, RAG, etc." to maintain consistent technical writing.
There was a problem hiding this comment.
Actionable comments posted: 4
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.cursor/skills/specs/references/cmd_implement.md:
- Line 68: Replace the vague placeholder and non-descriptive link text in the
string that currently reads "A coding agent just implemented phase N of
[project]. Review the changes using `git diff`. The spec for this project can be
found [here](link_to_spec_folder)." — update the markdown to point to a concrete
path pattern (e.g., a relative spec folder pattern like
`specs/<project>/phase-N` or a repo-specific glob) in place of
`link_to_spec_folder`, and change the link text from "[here]" to a descriptive
phrase such as "project spec" or "phase N spec" so the new text clearly
identifies and links to the spec (locate and edit this literal line in the file
content).
In `@agents/code_review_guidelines.md`:
- Line 26: Update the sentence "All visible classes/vars should have docstrings
explaining their purpose. These will be pulled into 3rd party docs
automatically. The doc strings should be written for 3rd party devs learning the
SDK." by hyphenating the compound adjective "3rd party" in both occurrences to
"3rd-party" so it reads "...pulled into 3rd-party docs..." and "...written for
3rd-party devs..."; ensure both instances in the line are changed and keep the
rest of the wording unchanged.
- Around line 15-18: Update the "Python specific guide" heading and wording to
correct grammar: change the heading text "Python specific" to "Python-specific"
and replace the phrase "where ever" with the single word "wherever" in the line
that reads "We use `asyncio` where ever possible. Avoid threads..." so it
becomes "We use `asyncio` wherever possible. Avoid threads..." to ensure correct
hyphenation and word usage.
- Around line 9-10: Update the two typos in the comments guidance: in the
"Unnecessary comments" bullet replace "self explanitory" with "self-explanatory"
and in the "Missing comments" bullet replace "non obvious" with "non-obvious";
locate the phrases within the "Unnecessary comments" and "Missing comments"
lines and apply the corrected hyphenation and spelling.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro
Run ID: 05b66928-c219-4888-a321-05dbf3f9b36b
📒 Files selected for processing (3)
.cursor/skills/specs/references/cmd_implement.mdAGENTS.mdagents/code_review_guidelines.md
✅ Files skipped from review due to trivial changes (1)
- AGENTS.md
| 9. **Self code-review via sub-agent**: | ||
| - → Read [references/spawning_subagents.md](references/spawning_subagents.md) for how to spawn | ||
| - Pass the prompt from [references/cr_agent_prompt.md](references/cr_agent_prompt.md) to the sub-agent | ||
| - Include: "A coding agent just implemented phase N of [project]. Review the changes using `git diff`. The spec for this project can be found [here](link_to_spec_folder)." |
There was a problem hiding this comment.
Replace placeholder with specific path pattern and improve link text.
Line 68 contains a vague placeholder link_to_spec_folder that isn't actionable, and the link text "[here]" is non-descriptive.
📝 Proposed fix
- - Include: "A coding agent just implemented phase N of [project]. Review the changes using `git diff`. The spec for this project can be found [here](link_to_spec_folder)."
+ - Include: "A coding agent just implemented phase N of [project]. Review the changes using `git diff`. The spec for this project can be found at `specs/projects/PROJECT_NAME/`."📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - Include: "A coding agent just implemented phase N of [project]. Review the changes using `git diff`. The spec for this project can be found [here](link_to_spec_folder)." | |
| - Include: "A coding agent just implemented phase N of [project]. Review the changes using `git diff`. The spec for this project can be found at `specs/projects/PROJECT_NAME/`." |
🧰 Tools
🪛 markdownlint-cli2 (0.21.0)
[warning] 68-68: Link text should be descriptive
(MD059, descriptive-link-text)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.cursor/skills/specs/references/cmd_implement.md at line 68, Replace the
vague placeholder and non-descriptive link text in the string that currently
reads "A coding agent just implemented phase N of [project]. Review the changes
using `git diff`. The spec for this project can be found
[here](link_to_spec_folder)." — update the markdown to point to a concrete path
pattern (e.g., a relative spec folder pattern like `specs/<project>/phase-N` or
a repo-specific glob) in place of `link_to_spec_folder`, and change the link
text from "[here]" to a descriptive phrase such as "project spec" or "phase N
spec" so the new text clearly identifies and links to the spec (locate and edit
this literal line in the file content).
| - Unnecessary comments: explaining code that is self explanitory, or code that should be explained by function/var names and is instead explained by comments | ||
| - Missing comments: comments should document the "why" not the what. If code does something unexpected, and the "why" is non obvious, the why should be documented. |
There was a problem hiding this comment.
Fix typo and hyphenation in comments guidance.
Two minor issues in the code comments section:
- Line 9: "self explanitory" should be "self-explanatory"
- Line 10: "non obvious" should be "non-obvious"
📝 Proposed fix
- - Unnecessary comments: explaining code that is self explanitory, or code that should be explained by function/var names and is instead explained by comments
- - Missing comments: comments should document the "why" not the what. If code does something unexpected, and the "why" is non obvious, the why should be documented.
+ - Unnecessary comments: explaining code that is self-explanatory, or code that should be explained by function/var names and is instead explained by comments
+ - Missing comments: comments should document the "why" not the what. If code does something unexpected, and the "why" is non-obvious, the why should be documented.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - Unnecessary comments: explaining code that is self explanitory, or code that should be explained by function/var names and is instead explained by comments | |
| - Missing comments: comments should document the "why" not the what. If code does something unexpected, and the "why" is non obvious, the why should be documented. | |
| - Unnecessary comments: explaining code that is self-explanatory, or code that should be explained by function/var names and is instead explained by comments | |
| - Missing comments: comments should document the "why" not the what. If code does something unexpected, and the "why" is non-obvious, the why should be documented. |
🧰 Tools
🪛 LanguageTool
[grammar] ~10-~10: Use a hyphen to join words.
Context: ...mething unexpected, and the "why" is non obvious, the why should be documented. -...
(QB_NEW_EN_HYPHEN)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@agents/code_review_guidelines.md` around lines 9 - 10, Update the two typos
in the comments guidance: in the "Unnecessary comments" bullet replace "self
explanitory" with "self-explanatory" and in the "Missing comments" bullet
replace "non obvious" with "non-obvious"; locate the phrases within the
"Unnecessary comments" and "Missing comments" lines and apply the corrected
hyphenation and spelling.
| ### Python specific guide | ||
|
|
||
| - Code should be "Pythonic" | ||
| - We use `asyncio` where ever possible. Avoid threads unless there's a good reason we can't use async. |
There was a problem hiding this comment.
Fix grammar issues in Python section.
Two grammar corrections needed:
- Line 15: "Python specific" should be "Python-specific"
- Line 18: "where ever" should be "wherever"
📝 Proposed fix
-### Python specific guide
+### Python-specific guide
- Code should be "Pythonic"
-- We use `asyncio` where ever possible. Avoid threads unless there's a good reason we can't use async.
+- We use `asyncio` wherever possible. Avoid threads unless there's a good reason we can't use async.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| ### Python specific guide | |
| - Code should be "Pythonic" | |
| - We use `asyncio` where ever possible. Avoid threads unless there's a good reason we can't use async. | |
| ### Python-specific guide | |
| - Code should be "Pythonic" | |
| - We use `asyncio` wherever possible. Avoid threads unless there's a good reason we can't use async. |
🧰 Tools
🪛 LanguageTool
[grammar] ~15-~15: Use a hyphen to join words.
Context: ...ally called from many apps). ### Python specific guide - Code should be "Python...
(QB_NEW_EN_HYPHEN)
[grammar] ~18-~18: Ensure spelling is correct
Context: ...should be "Pythonic" - We use asyncio where ever possible. Avoid threads unless there's ...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@agents/code_review_guidelines.md` around lines 15 - 18, Update the "Python
specific guide" heading and wording to correct grammar: change the heading text
"Python specific" to "Python-specific" and replace the phrase "where ever" with
the single word "wherever" in the line that reads "We use `asyncio` where ever
possible. Avoid threads..." so it becomes "We use `asyncio` wherever possible.
Avoid threads..." to ensure correct hyphenation and word usage.
| The SDK in `/libs/core` is a SDK/library we expose to third parties. We code review it with additional standards. | ||
|
|
||
| - Changing existing APIs that break current users should be avoided. Call out breaking API changes, and confirm with user that we're okay with this break. | ||
| - All visible classes/vars should have docstrings explaining their purpose. These will be pulled into 3rd party docs automatically. The doc strings should be written for 3rd party devs learning the SDK. |
There was a problem hiding this comment.
Add hyphens to "3rd-party" compound adjective.
"3rd party" should be hyphenated when used as a compound adjective (appears twice on this line).
📝 Proposed fix
-- All visible classes/vars should have docstrings explaining their purpose. These will be pulled into 3rd party docs automatically. The doc strings should be written for 3rd party devs learning the SDK.
+- All visible classes/vars should have docstrings explaining their purpose. These will be pulled into 3rd-party docs automatically. The doc strings should be written for 3rd-party devs learning the SDK.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - All visible classes/vars should have docstrings explaining their purpose. These will be pulled into 3rd party docs automatically. The doc strings should be written for 3rd party devs learning the SDK. | |
| - All visible classes/vars should have docstrings explaining their purpose. These will be pulled into 3rd-party docs automatically. The doc strings should be written for 3rd-party devs learning the SDK. |
🧰 Tools
🪛 LanguageTool
[grammar] ~26-~26: Use a hyphen to join words.
Context: ...r purpose. These will be pulled into 3rd party docs automatically. The doc string...
(QB_NEW_EN_HYPHEN)
[grammar] ~26-~26: Use a hyphen to join words.
Context: ...he doc strings should be written for 3rd party devs learning the SDK. - Performan...
(QB_NEW_EN_HYPHEN)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@agents/code_review_guidelines.md` at line 26, Update the sentence "All
visible classes/vars should have docstrings explaining their purpose. These will
be pulled into 3rd party docs automatically. The doc strings should be written
for 3rd party devs learning the SDK." by hyphenating the compound adjective "3rd
party" in both occurrences to "3rd-party" so it reads "...pulled into 3rd-party
docs..." and "...written for 3rd-party devs..."; ensure both instances in the
line are changed and keep the rest of the wording unchanged.
There was a problem hiding this comment.
Actionable comments posted: 2
♻️ Duplicate comments (3)
.agents/code_review_guidelines.md (3)
26-26:⚠️ Potential issue | 🟡 MinorHyphenate compound adjective "3rd party".
The phrase "3rd party" should be hyphenated when used as a compound adjective (appears twice on this line).
📝 Proposed fix
-- All visible classes/vars should have docstrings explaining their purpose. These will be pulled into 3rd party docs automatically. The doc strings should be written for 3rd party devs learning the SDK. +- All visible classes/vars should have docstrings explaining their purpose. These will be pulled into 3rd-party docs automatically. The doc strings should be written for 3rd-party devs learning the SDK.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.agents/code_review_guidelines.md at line 26, Change the two occurrences of the unhyphenated compound adjective "3rd party" on the line in the doc rule to the hyphenated form "3rd-party" so the sentence reads that docstrings will be pulled into "3rd-party docs" and be written for "3rd-party devs"; update both instances of "3rd party" on that line (the visible classes/vars docstring guidance) to "3rd-party".
9-10:⚠️ Potential issue | 🟡 MinorFix typos in comments guidance.
Two spelling/grammar issues:
- "self explanitory" should be "self-explanatory"
- "non obvious" should be "non-obvious"
📝 Proposed fix
- - Unnecessary comments: explaining code that is self explanitory, or code that should be explained by function/var names and is instead explained by comments - - Missing comments: comments should document the "why" not the what. If code does something unexpected, and the "why" is non obvious, the why should be documented. + - Unnecessary comments: explaining code that is self-explanatory, or code that should be explained by function/var names and is instead explained by comments + - Missing comments: comments should document the "why" not the what. If code does something unexpected, and the "why" is non-obvious, the why should be documented.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.agents/code_review_guidelines.md around lines 9 - 10, The guidance text contains two typos: replace "self explanitory" with "self-explanatory" and "non obvious" with "non-obvious" in the comment block that lists "Unnecessary comments" and "Missing comments" so the wording is grammatically correct and hyphenated; update those two phrases in the same paragraph where they appear.
15-18:⚠️ Potential issue | 🟡 MinorFix grammar issues in Python section.
Two corrections needed:
- "Python specific" should be "Python-specific" (compound adjective)
- "where ever" should be "wherever" (single word)
📝 Proposed fix
-### Python specific guide +### Python-specific guide - Code should be "Pythonic" -- We use `asyncio` where ever possible. Avoid threads unless there's a good reason we can't use async. +- We use `asyncio` wherever possible. Avoid threads unless there's a good reason we can't use async.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.agents/code_review_guidelines.md around lines 15 - 18, The "Python specific" heading and the phrase "where ever possible" have grammar issues; update the heading "### Python specific guide" to "### Python-specific guide" and change "We use `asyncio` where ever possible." to "We use `asyncio` wherever possible." so the compound adjective and adverb are corrected in the Python-specific guide section.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.agents/code_review_guidelines.md:
- Line 3: The markdown heading "### Issues to watch for" violates heading
hierarchy by jumping from h1 to h3; change the heading level to "## Issues to
watch for" (update the heading text "Issues to watch for") so it increments one
level at a time and restores proper h1->h2->h3 structure in the document.
- Line 27: Update the performance guidance sentence mentioning base_adapter and
litellm_adapter: change "etc)" to "etc.)" and change "blocking IO" to "blocking
I/O" so the sentence reads correctly and uses the standard abbreviation; locate
the sentence referencing base_adapter and litellm_adapter in the performance
guidance block and apply these two textual edits.
---
Duplicate comments:
In @.agents/code_review_guidelines.md:
- Line 26: Change the two occurrences of the unhyphenated compound adjective
"3rd party" on the line in the doc rule to the hyphenated form "3rd-party" so
the sentence reads that docstrings will be pulled into "3rd-party docs" and be
written for "3rd-party devs"; update both instances of "3rd party" on that line
(the visible classes/vars docstring guidance) to "3rd-party".
- Around line 9-10: The guidance text contains two typos: replace "self
explanitory" with "self-explanatory" and "non obvious" with "non-obvious" in the
comment block that lists "Unnecessary comments" and "Missing comments" so the
wording is grammatically correct and hyphenated; update those two phrases in the
same paragraph where they appear.
- Around line 15-18: The "Python specific" heading and the phrase "where ever
possible" have grammar issues; update the heading "### Python specific guide" to
"### Python-specific guide" and change "We use `asyncio` where ever possible."
to "We use `asyncio` wherever possible." so the compound adjective and adverb
are corrected in the Python-specific guide section.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro
Run ID: cfd5cdef-0f70-497a-b39b-e94cae3aa133
📒 Files selected for processing (2)
.agents/code_review_guidelines.md.gitignore
✅ Files skipped from review due to trivial changes (1)
- .gitignore
| @@ -0,0 +1,27 @@ | |||
| # Kiln Code Review Guidelines | |||
|
|
|||
| ### Issues to watch for | |||
There was a problem hiding this comment.
Fix heading level hierarchy.
The heading "### Issues to watch for" jumps from h1 to h3, skipping h2. Per markdown best practices, heading levels should increment by one level at a time.
📝 Proposed fix
-### Issues to watch for
+## Issues to watch for📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| ### Issues to watch for | |
| ## Issues to watch for |
🧰 Tools
🪛 markdownlint-cli2 (0.21.0)
[warning] 3-3: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3
(MD001, heading-increment)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.agents/code_review_guidelines.md at line 3, The markdown heading "###
Issues to watch for" violates heading hierarchy by jumping from h1 to h3; change
the heading level to "## Issues to watch for" (update the heading text "Issues
to watch for") so it increments one level at a time and restores proper
h1->h2->h3 structure in the document.
|
|
||
| - Changing existing APIs that break current users should be avoided. Call out breaking API changes, and confirm with user that we're okay with this break. | ||
| - All visible classes/vars should have docstrings explaining their purpose. These will be pulled into 3rd party docs automatically. The doc strings should be written for 3rd party devs learning the SDK. | ||
| - Performance: the base_adapter and litellm_adapter are performance critical. They are the core run-loop of our agent system. We should avoid anything that would slow them down (file reads should be done once and passed in, etc). It's critical to avoid blocking IO - a process may be executing hundreds of these in parallel. |
There was a problem hiding this comment.
Fix formatting issues in performance guidance.
Two minor formatting corrections:
- "etc)" should be "etc.)" with a period before the closing parenthesis
- "blocking IO" should be "blocking I/O" for the standard abbreviation
📝 Proposed fix
-- Performance: the base_adapter and litellm_adapter are performance critical. They are the core run-loop of our agent system. We should avoid anything that would slow them down (file reads should be done once and passed in, etc). It's critical to avoid blocking IO - a process may be executing hundreds of these in parallel.
+- Performance: the base_adapter and litellm_adapter are performance critical. They are the core run-loop of our agent system. We should avoid anything that would slow them down (file reads should be done once and passed in, etc.). It's critical to avoid blocking I/O - a process may be executing hundreds of these in parallel.🧰 Tools
🪛 LanguageTool
[style] ~27-~27: In American English, abbreviations like “etc.” require a period.
Context: ...eads should be done once and passed in, etc). It's critical to avoid blocking IO - ...
(ETC_PERIOD)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In @.agents/code_review_guidelines.md at line 27, Update the performance
guidance sentence mentioning base_adapter and litellm_adapter: change "etc)" to
"etc.)" and change "blocking IO" to "blocking I/O" so the sentence reads
correctly and uses the standard abbreviation; locate the sentence referencing
base_adapter and litellm_adapter in the performance guidance block and apply
these two textual edits.
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
.config/wt.toml (1)
3-3: Consider wrapping the hook script withbashfor consistency.The script
utils/setup_claude.shis already executable and has a proper shebang, so direct invocation will work. However, other hooks in the same file (deps,session) use shell syntax and command chaining. Wrapping this asclaude = "bash utils/setup_claude.sh"makes the invocation method explicit and consistent with the pattern of multi-command hooks in the configuration.Suggested change
-claude = "utils/setup_claude.sh" +claude = "bash utils/setup_claude.sh"🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.config/wt.toml at line 3, Update the claude hook value to invoke the script through bash for consistency with other hooks: change the claude entry (claude = "utils/setup_claude.sh") to explicitly run via bash (e.g., claude = "bash utils/setup_claude.sh") so the invocation method matches the deps/session hooks and avoids ambiguity even though the script is executable and has a shebang.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@utils/setup_claude.sh`:
- Around line 4-8: Add a defensive existence check before the unconditional "cp
AGENTS.md CLAUDE.md" operation: verify that AGENTS.md exists (similar to the
existing check for ".cursor/skills"), and if it does not, emit a clear error
message and exit non‑zero so the script fails with an informative message rather
than an opaque cp error; update the block around the cp command in
utils/setup_claude.sh accordingly so the check precedes the cp AGENTS.md
CLAUDE.md operation.
---
Nitpick comments:
In @.config/wt.toml:
- Line 3: Update the claude hook value to invoke the script through bash for
consistency with other hooks: change the claude entry (claude =
"utils/setup_claude.sh") to explicitly run via bash (e.g., claude = "bash
utils/setup_claude.sh") so the invocation method matches the deps/session hooks
and avoids ambiguity even though the script is executable and has a shebang.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro
Run ID: 9134f627-439d-4c6a-84c7-4bb72485ead6
📒 Files selected for processing (2)
.config/wt.tomlutils/setup_claude.sh
| set -e | ||
|
|
||
| # Copy AGENTS.md to CLAUDE.md | ||
| cp AGENTS.md CLAUDE.md | ||
|
|
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# First, locate and read the script file
fd "setup_claude.sh" -type fRepository: Kiln-AI/Kiln
Length of output: 226
🏁 Script executed:
#!/bin/bash
# Check if file exists and read its content
if [ -f "utils/setup_claude.sh" ]; then
echo "=== Content of utils/setup_claude.sh ==="
cat -n utils/setup_claude.sh
else
echo "File not found"
fiRepository: Kiln-AI/Kiln
Length of output: 468
🏁 Script executed:
#!/bin/bash
# Check if AGENTS.md exists in root
echo "=== Checking for AGENTS.md in root ==="
if [ -f "AGENTS.md" ]; then
echo "AGENTS.md exists"
head -3 AGENTS.md
else
echo "AGENTS.md not found"
fi
# Look for any post-create hooks context
echo -e "\n=== Looking for post-create hook references ==="
rg "post-create|setup_claude" -t sh -t md --max-count=10Repository: Kiln-AI/Kiln
Length of output: 340
🏁 Script executed:
#!/bin/bash
# Check the directory structure to understand context
echo "=== Repository root structure ==="
ls -la | grep -E "(AGENTS|CLAUDE|\.cursor|utils)"
echo -e "\n=== utils directory content ==="
ls -la utils/
echo -e "\n=== .cursor directory content (if exists) ==="
if [ -d ".cursor" ]; then
ls -la .cursor/
fiRepository: Kiln-AI/Kiln
Length of output: 938
🏁 Script executed:
#!/bin/bash
# Look for VS Code post-create hook references or dev container config
echo "=== Looking for post-create configuration ==="
fd "\.devcontainer|post-create" -type f 2>/dev/null | head -20
echo -e "\n=== Check for devcontainer.json ==="
find . -name "devcontainer.json" -o -name ".devcontainer.json" 2>/dev/null
echo -e "\n=== Check for any documentation about setup_claude.sh ==="
rg "setup_claude" . --max-count=5 -i
echo -e "\n=== Look at related setup scripts for patterns ==="
cat -n utils/setup_env.shRepository: Kiln-AI/Kiln
Length of output: 2394
Add defensive check for AGENTS.md to match error handling pattern in same script.
With set -e active, the unconditional copy on Line 7 will abort the script if AGENTS.md is missing. The script already uses defensive checks for optional resources (.cursor/skills at Lines 10-13), creating inconsistent error handling for a critical operation.
Suggested fix
set -e
# Copy AGENTS.md to CLAUDE.md
-cp AGENTS.md CLAUDE.md
+if [ -f "AGENTS.md" ]; then
+ cp AGENTS.md CLAUDE.md
+fi📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| set -e | |
| # Copy AGENTS.md to CLAUDE.md | |
| cp AGENTS.md CLAUDE.md | |
| set -e | |
| # Copy AGENTS.md to CLAUDE.md | |
| if [ -f "AGENTS.md" ]; then | |
| cp AGENTS.md CLAUDE.md | |
| fi | |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@utils/setup_claude.sh` around lines 4 - 8, Add a defensive existence check
before the unconditional "cp AGENTS.md CLAUDE.md" operation: verify that
AGENTS.md exists (similar to the existing check for ".cursor/skills"), and if it
does not, emit a clear error message and exit non‑zero so the script fails with
an informative message rather than an opaque cp error; update the block around
the cp command in utils/setup_claude.sh accordingly so the check precedes the cp
AGENTS.md CLAUDE.md operation.
A new skill for using the "spec-driven-dev" approach
Summary by CodeRabbit